【LDAP】在Centos7环境搭建LDAP服务端 | 您所在的位置:网站首页 › 搭建openldap环境配置密码策略转载 › 【LDAP】在Centos7环境搭建LDAP服务端 |
在Centos7环境搭建LDAP服务端
前言正文OpenLDAP介绍LDIF文件书写规则OpenLDAP部署安装服务配置ldap修改管理员密码初始化配置直接修改配置文件(不建议)使用ldapmodify(建议)
添加模式其他配置修改修改服务端口
创建域文件修改BaseDN信息添加自己的域信息
前言
事情的起因是最近开始的HW行动,我们环境的NIFI集群由于是内外网隔离,所以没有开启任何安全防护措施(除了防火墙),因此内网嗅探工具检测出了未授权访问漏洞。为了在不开启kerberos的前提的进行漏洞修复,我们认识到KNOX这个工具,发现它能够和许多大数据组件进行集成,做正向代理或者SSO单点登录。 大伙一合计,既然本身就要做安全集群,那就折腾一下,最终整了出来,安全复扫也没有再扫出漏洞了 不过在做KNOX的时候,我们使用的是内置的ldap服务,并没有进行ldap自建,后来弄完以后,还是想着需要自建ldap会好些,于是乎就有了个人对OpenLDAP的学习。 正文 OpenLDAP介绍OpenLDAP其实就是LDAP协议的一种开源实现,一定要注意LDAP指的是协议,不是服务,LDAP的目录信息是以树形结构进行存储的,在树根一般定义国家(c=CN)或者域名(dc=com),其次往往定义一个或多个组织(organization, o)或组织单元(organization unit, ou)。一个组织单元可以包含员工、设备信息(计算机/打印机等)相关信息。例如uid=babs, ou=People, dc=example, dc=com,dc这里如果你想要新增自己的domain component,只要继续生成objectClass: domain即可,这个是百度不到的; 下图是LDAP中的相关概念,只是为了部署的话参照着看就行: LDIF文件书写规则ldif是存储LDAP配置信息及目录内容的标准文本文件格式,通常用来交换数据并在OpenLDAP服务器之间互相交换数据,并且可以通过LDIF实现数据文件的导入、导出以及数据文件的添加、修改、重命名等操作,这些信息需要按照LDAP中schema的规范进行操作,并会接受schema的检查,如果不符合OpenLDAP schema规范要求,则会提示相关语法错误。 LDIF文件每行的结尾不允许有空格或者制表符;LDIF文件允许相关属性可以重复赋值并使用;LDIF文件以.ldif结尾命名;LDIF文件中以#号开头的一行为注释,可以作为解释使用;LDIF文件所有的赋值方式为:属性:[空格]属性值;LDIF文件通过空行来定义一个条目,空格前为一个条目,空格后为另一个条目的开始。 OpenLDAP部署 安装服务检查服务器是否已安装openldap相关服务,若没用使用yum进行安装,openldap服务在Centos的ISO镜像中包含,不需要额外引入软件源: # yum安装命令 # yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap [lijiadong@hostname ~]$ rpm -qa|grep openldap openldap-2.4.44-22.el7.x86_64 openldap-clients-2.4.44-22.el7.x86_64 openldap-servers-2.4.44-22.el7.x86_64 compat-openldap-2.3.43-5.el7.x86_64 openldap-devel-2.4.44-22.el7.x86_64软件安装完成后,/usr/share/openldap-servers目录下会有一个文件DB_CONFIG.example,用来做配置初始化; cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # 注意进行授权给ldap用户 chown ldap:ldap DB_CONFIG接下来启动slapd服务: systemctl start slapd systemctl status slapd # 设置开机启动 systemctl enable slapd几乎所有网上资料都会说修改slapd.conf文件进行配置变更,但是openldap2.4.23版本后不再使用slapd.conf作为配置文件了,这个一定要知道 配置ldap 修改管理员密码 # 执行slappasswd -s ${password},记录下返回值,后续会用到 {SSHA}EVy9FDUpcmS8g9meVx7oZj2x38oikdsadsasNS 初始化配置这里展示了两种方式,是为了进行对比,因为笔者之前踩了这个坑,手动去做配置文件修改,这其实是官方不建议的 直接修改配置文件(不建议)修改 /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif 以下行没有则新增,dc注意更改成自己的域名domain olcSuffix: dc=maggot,dc=com olcRootPW: {SSHA}EVy9FDUpcmS8g9meVx7oZj2x38oikdsadsasNS olcRootDN: cn=Manager,dc=maggot,dc=co修改/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=maggot,dc=com" read by * none测试配置文件 该步骤是为了检查配置文件是否存在错误: slaptest -u返回值有config file testing succeeded则说明配置文件无误,checksum error on的异常是因为手动修改了文件,ldap检查和之前不一致; 使用ldapmodify(建议)首先来修改hbd.ldif文件,编辑一个新的db.ldif文件,注意修改olcRootDN和olcSuffix,改成你需要的域名相关信息,同时修改olcRootPW内容,这个值就是上一节返回的管理员密码加密字符串: dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=maggot,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=root,dc=maggot,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootPW olcRootPW: {SSHA}EVy9FDUpcmS8g9meVx7oZj2x38oikdsadsasNS保存退出后,执行ldapmodify进行更新: ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/db.ldif修改monitor.ldif文件,编辑一个新的monitor.ldif文件,注意修改域名相关信息: dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=root,dc=maggot,dc=com" read by * none保存退出后,执行ldapmodify进行更新: ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/monitor.ldif此时我们再进行检查,不会再像直接修改配置文件一样报checksum的错误: slaptest -u 添加模式添加cosine和nis LDAP模式,这一步还不清楚原因: ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif 其他配置修改 修改服务端口端口配置在/etc/sysconfig/slapd文件: vim /etc/sysconfig/slapd # OpenLDAP server configuration # see 'man slapd' for additional information # Where the server will run (-h option) # - ldapi:/// is required for on-the-fly configuration using client tools # (use SASL with EXTERNAL mechanism for authentication) # - default: ldapi:/// ldap:/// # - example: ldapi:/// ldap://127.0.0.1/ ldap://10.0.0.1:1389/ ldaps:/// SLAPD_URLS="ldapi:/// ldap://localhost:33389/" # Any custom options #SLAPD_OPTIONS="" # Keytab location for GSSAPI Kerberos authentication #KRB5_KTNAME="FILE:/etc/openldap/ldap.keytab" 创建域文件 修改BaseDN信息创建一个ldif文件,这里假设为maggot.ldif: dn: dc=maggot,dc=com dc: maggot objectClass: top objectClass: domain dn: cn=root,dc=maggot,dc=com objectClass: organizationalRole cn: root description: Maggot LDAP manager users dn: ou=People,dc=maggot,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=maggot,dc=com objectClass: organizationalUnit ou: Group导入生效: ldapadd -x -W -D "cn=root,dc=maggot,dc=com" -f /tmp/maggot.ldif 添加自己的域信息可以编辑一下结构的ldif文件,用于生成组织信息,该操作会最终生成多个层级的dc, dn: dc=org,dc=maggot,dc=com objectClass: domain objectclass: dcObject dc: org dn: dc=apache,dc=org,dc=maggot,dc=com objectClass: domain objectclass: dcObject dc: apache dn: dc=hadoop,dc=apache,dc=org,dc=maggot,dc=com objectClass: organization objectClass: dcObject o: Hadoop dc: hadoop添加完成后通过ldapsearch命令查看结果: ldapsearch -h localhost -p 389 -x -D "cn=root,dc=maggot,dc=com" -w 'Dtsw@Admin996' -b 'dc=maggot,dc=com' '(objectClass=*)'到这一步已经能够满足KNOX切换到自建LDAP服务的要求了,切换完成后,测试登录正常,且日志中能够看到对自定义域的用户规则的匹配记录: |
CopyRight 2018-2019 实验室设备网 版权所有 |